﻿// Meteor Shower POJ - 3669.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>
#include <map>
#include <vector>
#include <algorithm>
#include <queue>


using namespace std;
//https://vjudge.csgrandeur.cn/problem/POJ-3669
/*
贝茜听说一场非同寻常的流星雨即将来临；报道称这些流星将撞击地球并摧毁它们碰到的任何东西。
为了自己的安全，她发誓要找到一个安全的地方（不会被流星摧毁）。
她目前正在坐标平面的原点上吃草，并希望在前往新的、更安全的地方时避免被流星摧毁。

报道称将有 M 颗流星（1 ≤ M ≤ 50,000）落下，第 i 颗流星将在时间 Ti（0 ≤ Ti ≤ 1,000）撞击到坐标点 (Xi, Yi)
（0 ≤ Xi ≤ 300; 0 ≤ Yi ≤ 300）。每颗流星都会摧毁它撞击的点，以及四个直线相邻格点。

贝茜从时间 0 开始离开原点，她可以以每秒钟一单位的速度沿着第一象限的轴线平行移动到未被流星摧毁的（通常有4个）相邻直线点之一。
但是，她不能在等于或大于被摧毁的时间的点上停留。

确定贝茜到达一个安全地点所需的最短时间。

输入：

第1行：一个整数 M
第2到第 M+1 行：每行包含三个由空格分隔的整数：Xi、Yi 和 Ti
输出：

第1行：贝茜到达安全地点所需的最短时间，如果不可能到达则为 -1。

4
0 0 2
2 1 2
1 1 2
0 3 5


5

*/

int m;
int ans = 0x3f3f3f3f;
int limitTime = 0;
map<int,vector<int> > mv;


void bfs(int x) {
	queue<vector<int> > q;
	vector<int> v; v.push_back(0); v.push_back(0); v.push_back(0);
	q.push(v);

	while (!q.empty()) {


	}


}


int main()
{
	cin >> m;
	for (int i = 0; i < m; i++) {
		int x, y, t;
		cin >> x >> y >> t;
		mv[t].push_back(x); mv[t].push_back(y);
		limitTime = max(limitTime, t);
	}

	bfs(0);

	return 0;
}

